# ---- Spring Boot 后端应用 Dockerfile ----

# 1. 选择一个基础镜像
# 我们的程序是Java程序，所以需要一个包含Java运行环境的镜像。
# `openjdk:17-jdk-slim` 是一个官方的、比较小巧的、包含JDK 17的镜像，非常适合。
FROM openjdk:21-jdk-slim

# 2. 设置工作目录
# 在容器内部创建一个 `/app` 目录，并把它设为后续命令执行的默认目录。
# 这样做可以避免把文件直接散落在容器的根目录，是一种好习惯。
WORKDIR /app

# 3. 复制打包好的JAR文件
# 将我们刚刚在宿主机（你的电脑）上打包好的 `demo-0.0.1-SNAPSHOT.jar` 文件，
# 从 `target` 目录复制到容器内的工作目录 `/app` 中，并把它重命名为 `app.jar`。
# 使用一个固定的名字 `app.jar` 可以让启动命令更通用。
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 4. 声明容器对外暴露的端口
# 声明这个容器在运行时，将会监听 8080 端口。
# 这个端口号必须与你在 `application.properties` 中配置的 `server.port=8080` 一致。
# 注意：这只是一个“元数据”声明，真正的端口映射是在后面的 `docker-compose.yml` 中配置的。
EXPOSE 8080

# 5. 定义容器的启动命令
# 这是容器启动时，要执行的第一个也是唯一一个命令。
# `["java", "-jar", "app.jar"]` 就是在容器的终端里执行 `java -jar app.jar` 这条命令，
# 用来启动我们的Spring Boot应用。
ENTRYPOINT ["java", "-jar", "app.jar"]